In a computing device such as a personal computer or the like, data is transferred to or from a storage medium associated therewith by way of a file system on the computing device which manages the files on such storage medium. In particular, the file system organizes and maintains access to the storage medium, and processes requests to transfer data to or from the storage medium.
In the prior art, the file system receives the data to be transferred from the storage medium and forwards the data to a destination or receives the data to be transferred from a source and forwards the data to the storage medium, as the case may be. However, with the file system thus acting as an intermediary, a transfer of an especially large amount of data can be especially processing-intensive inasmuch as the data is transferred in portions and each portion requires a separate transfer to the file system and a separate transfer from the file system, as well as associated computational overhead.
In particular, in the prior art, a transfer of data from whatever source to a hard drive of the computing device, for example, is performed according to the following steps, generally. Preliminarily, an application on the computing device directs the file system of such computing device to create a file on the hard drive based on the data. Note that in doing so, the application need not necessarily inform the file system of the source of the data or the size of the data. Thereafter, the application obtains a first portion of the data from the source thereof, and delivers same to the file system, perhaps as part of a forwarded buffer, along with a command thereto to write the first portion of the data to the hard drive. Typically, the hard drive includes or has associated therewith a block driver or the like that interfaces with the file system, and the file system thus communicates with the hard drive by way of the block driver thereof. Also typically, the file system maintains sector information on each sector of the hard drive, including whether such sector is in use and if so what file is using such sector.
Accordingly, to write the first portion of the data to the hard drive, the file system refers to such sector information to determine available sectors for the first portion of the data and compiles a sector list including an identification of the sectors of the hard drive that are to be used to store the first portion of the data. As should be appreciated, the file system compiles the sector list in a generally known manner based at least in part on the size of the first portion of the data and the capacity of each sector. At any rate, the file system sends the first portion of the data and the sector list compiled therefor to the block driver of the hard drive, and the block driver then stores the first portion of the data onto the hard drive according to the sector list in a generally known manner.
Thereafter, the application obtains a second portion of the data from the source thereof, and in a manner generally identical to that set forth above delivers same to the file system along with a command to write the second portion of the data to the hard drive. As may be appreciated, the process continues as necessary with third, fourth, fifth, etc. portions of the data until all the data is transferred from the source thereof to the hard drive. Note that the process is similar when reading data from the hard drive to a destination, although of course the data travels through the file system in the opposite direction.
To summarize, then, in the prior art, each portion of data written to a hard drive or the like is first delivered from a source of such data to the file system and is then delivered from the file system to the hard drive, and likewise each portion of data read from the hard drive or the like is first delivered from the hard drive to the file system and is then delivered from the file system to a destination of such data. However, and again, such a process can be cumbersome and inefficient, especially when the amount of data is especially large and must all pass through the file system as an intermediary.
Accordingly, a need exists for a method by which data is delivered from a source or the like directly to a storage medium such as a hard drive or the like associated with a computing device without first passing through the file system of such computing device. Likewise, a similar need exists for a method by which data is delivered from such storage medium directly to a destination or the like without first passing through the file system of such computing device.